Method, system, and storage medium for performing calendaring and reminder activities

ABSTRACT

An exemplary embodiment of the invention relates to a method, system, and storage medium for performing calendaring and reminder activities for a computer user. The method includes analyzing text displayed on a computer screen, identifying calendar parameters resulting from the analysis, creating a calendar entry record that includes a source of the calendar parameters, pasting the calendar parameters into the calendar entry record, and automatically storing the calendar entry record in a calendar application without opening the calendar application. Calendar parameters include at least one of a date, a time, a meeting type, and a subject.

BACKGROUND OF INVENTION

The present invention relates generally to data processing activitiesand, more particularly, to a method, system, and storage medium forperforming calendaring and reminder activities for computer clients.

As computer technology becomes more advanced, computer users are able toinstall and utilize large numbers of complex software applications aswell as perform a wide variety of online activities such as research,web surfing, instant messaging, and shopping, to name a few. Softwareapplications in the business community are quickly replacing traditionalpaper-based tasks, such as writing memos, scheduling meetings, sendingreminders, and creating reports. One popular personal and businessapplication is an electronic calendar application that not only allowsindividuals to track appointments and special events, but also offersthe convenience of sharing the calendar data with other users online orthrough a communications network environment. Most calendaring programsare offered as a value-added tool to existing applications such as anemail program (e.g., Microsoft Outlook™). While these programs areuseful in their ability to organize and track an individual's businessand personal events, they suffer from some disadvantages as well. Forexample, if an individual is viewing a web site and discovers an eventor item that he/she would like to enter into a calendar, the individualmust first open the calendar program and then enter the relevant data.Sometimes the user will highlight a Uniform Resource Locator (URL)associated with the online event and paste it into the calendar program.However, if the URL should later change, the calendar informationbecomes useless to the individual. Thus, calendar references saved by anindividual can become outdated thereby diminishing the usefulness of thecalendar application. Further, switching between the user's web browser(or other application) and the calendar program is time-consuming andinconvenient.

Accordingly, it would be desirable to be able to record information intoa calendar program without the need to switch between applications. Itwould also be desirable to provide a way to ensure that the calendaredinformation is up-to-date and accurate.

SUMMARY OF INVENTION

The foregoing discussed drawbacks and deficiencies of the prior art areovercome or alleviated by a method, system, and storage medium forperforming calendaring and reminder activities for a computer user. Themethod includes analyzing text displayed on a computer screen,identifying calendar parameters resulting from the analysis, creating acalendar entry record that includes a source of the calendar parameters,pasting the calendar parameters into the calendar entry record, andautomatically storing the calendar entry record in a calendarapplication without opening the calendar application. Calendarparameters include at least one of a date, a time, a meeting type, and asubject.

BRIEF DESCRIPTION OF DRAWINGS

Referring to the exemplary drawings wherein like elements are numberedalike in the several FIGURES:

FIG. 1 is a block diagram of a system upon which the calendaring andreminder system is implemented in accordance with an exemplaryembodiment of the invention;

FIG. 2 is a flowchart describing a process of implementing thecalendaring and reminder system in accordance with a further aspect ofthe invention;

FIG. 3 is a flowchart describing a process of analyzing text via thecalendaring and reminder system in accordance with a further aspect ofthe invention;

FIG. 4 is a flowchart describing a process of validating and updating acalendar record via the calendaring and reminder system in accordancewith an exemplary embodiment of the invention;

FIG. 5 is a sample computer screen window depicting an activeapplication and a subwindow provided by the calendaring and remindersystem in accordance with a further aspect of the invention;

FIGS. 6A and 6B are flowcharts illustrating how the process softwareimplementing the systems and methods of the invention may be integratedinto client, server, and network environments;

FIGS. 7A and 7B are flowcharts illustrating various ways in which theprocess software of the invention may be semi-automatically orautomatically deployed across various networks and onto server, client(user), and proxy computers;

FIGS. 8A through 8C are flowcharts illustrating how process software forimplementing the systems and methods of the invention are deployedthrough the installation and use of two different forms of a virtualprivate network (VPN); and

FIGS. 9A and 9B are flowcharts illustrating how the process software forimplementing the systems and methods of the invention can be deployedthrough an On Demand business model, which allows the process softwareto be shared and simultaneously service multiple customers in aflexible, automated fashion under a pay-for-what-you-use plan.

DETAILED DESCRIPTION

Disclosed herein is a method, system, and storage medium for performingcalendaring and reminder activities for computer clients. Thecalendaring and reminder system enables a computer user to identify,select, and enter an event into the user's calendar program withoutopening the calendar program. The calendaring and reminder systemfurther provides analysis of the stored calendar information to ensurethat it is up-to-date and accurate.

Referring initially to FIG. 1, there is shown a block diagram of anetwork system for implementing the calendaring and reminder system.Network system 100 includes a computer client system 102 incommunication with a server 104 and a host system 106 via a networkconnection. The network connection may comprise any suitablecommunications networking technology known in the art such as anIntranet, an Extranet, a Virtual Private Network, a wide area network,the Internet, etc.

Computer client system 102 may be a general-purpose desktop computerthat subscribes to an Internet service provider and includes operatingsystem software 108, a web browser component 110, various applications112, and the calendaring and reminder system 114. The calendaring andreminder system creates calendar entry records 116 as described furtherherein. It will be understood by those skilled in the art that thecalendaring and reminder system 114 of the invention may be executed oncomputer systems with variant architectures. Operating system 108software such as Microsoft DOS™ or Unix™ may be employed by computerclient system 102. Client system 102 further executes a web browserapplication 110 such as Microsoft's Internet Explorer™ or NetscapeNavigator™. Typical applications 112 that may reside on computer clientsystem 102 and execute therefrom include word processing applications,spreadsheet applications, email and messaging applications, graphicstools, and other similar programs. The calendaring and reminder system114 is loaded into the computer client system operating system 108 uponinitialization and may be accessed by various means including selectingan icon on the user's computer screen window or by selecting a uniquekey or key combination on the user's keyboard.

The calendaring and reminder system 114 may be implemented as a plug-inapplication to an existing program such as the email application listedabove, or may operate as a standalone calendar program that incorporatesthe features and functions of the invention as described herein.

Server 104 refers to a source of information used by a user of computerclient system 102 in selecting and storing events on the computer clientsystem. Server 104 provides content to computer clients such as clientsystem 102 over the Internet. For example, server 104 may be operated bya business enterprise that maintains a web site for its customers. Whileonly one server 104 is shown, it will be understood that any number ofservers may be used in order to realize the advantages of the invention.

In the embodiment described with respect to FIG. 1, computer clientsystem 102 executes the calendaring and reminder system 114 and storesthe calendaring and reminder system internally. In an alternativeembodiment, host system 106 executes the calendaring and reminder system114 on behalf of computer client system 102, allowing client system 102access to its features and functions as described further herein.

Host system 106 comprises a high-powered multiprocessor computer deviceincluding web server and applications server software for receivingrequests from computer client system 102 to access applications and/ordata via the Internet or other network. For example, host system 106 maybe operated by an electronic utilities (e-utilities) business thatoutsources computing resources such as applications including thecalendaring and reminder system application 114.

As indicated above, the calendaring and reminder system 114 may beexecuted as a standalone application that is installed or downloaded oncomputer client system 102 or may be incorporated into an existingmessaging application or similar commercially-available product as anenhancement feature. Further, as indicated above, the features of thecalendaring and reminder system 114 may be provided via a third partyapplication service provider (ASP) or e-utilities broker where serviceis provided for a per-use fee. These and other embodiments are describedfurther in FIGS. 6-9.

FIG. 2 is a flowchart describing the process of implementing thecalendaring and reminder system 114 in an exemplary embodiment. Thecalendaring and reminder system 114 is loaded into memory when operatingsystem 108 is started. The process steps described in FIG. 2 assume thata computer user is executing an application and that an active documenthas been presented on the user's computer screen. The application may beany suitable application including a word processing application, a webbrowser program in which the user is accessing a web site or a web page,an email application in which the user is opening an email message, etc.At step 202, a user on computer client system 102 activates thecalendaring and reminder system 114 which causes a subwindow to pop upon the user's computer screen and is illustrated in FIG. 5. Thesubwindow 502 of computer screen 500 includes fields for date 504, time506, location 508, and subject 510 for the event to be logged, and mayinclude a list of calendar applications 511 (e.g., one of calendarapplications comprising applications 112) on the user's computer thatcan be selected to store or include the calendar entry. The calendarentry further includes a space to store the information source 514 suchas a web site address or document that is used to define the calendarevent settings.

The user may select a portion of the active document 512 on computerscreen 500 that includes the data to be included in the calendar entryrecord, or may directly select the time and date to be used in thecalendar entry at step 204. By selecting these portions, the system willbe more efficient and effective in locating the information the userwould like to include. It will be understood that the process recited instep 204 may precede that of step 202 and that the steps describedherein are not limited to the order in which they are presented. Theactive document 512 is analyzed for specific information (e.g., calendarparameters) to include in the calendar entry, such as time, date, place,and a subject suitable for calendar entry at step 206. Step 206 isdescribed in further detail in FIG. 3.

If the results of step 206 include several options at step 208, forexample, multiple dates or times, the user is presented with thefindings to select the desired option at step 210. If there is only oneset of time, date, etc., to include in the calendar entry, thatinformation is used for pasting into the calendar and the calendaringand reminder system 114 checks for conflicts at step 212. This may beaccomplished by comparing the calendar parameters found in the activedocument 512 to data stored in the calendar application. For example, iftwo events are requested for the same date and time, the calendaring andreminder system 114 alerts the user of this conflict. The user maybypass the conflict and schedule both events or select between theevents if desired.

The information selected by the user is pasted into the calendar entryrecord by the calendaring and reminder system 114 at step 214. Ifdesired, the user may change the settings for the information to beincluded in the calendar entry record or simply save the calendar entryin the selected calendar application at step 216. The calendaring andreminder system 114 automatically stores the calendar record 116 as wellas the calendar entry in the selected calendars that the user indicatedin step 202 without opening up the calendar application or switchingbetween applications. The calendar entry record includes information onthe location of the document or source that was used to create thecalendar entry record.

In an alternate embodiment, the calendar entry record may include theinformation on the location of the document or source that was used tocreate the calendar entry.

FIG. 3 is a flowchart describing the process of analyzing text forcalendar parameters as recited in step 206 of FIG. 2. The text to beanalyzed is selected at step 302. This step uses the text selected bythe user in step 204 of FIG. 2. If this is not available, the completetext of the active document may be used, starting with the text that isvisible on the computer screen. At step 304 the selected text portion issearched for the existence of one or more dates. The text is alsosearched for one or more times (e.g., a meeting time) at step 306. Thisstep may use the time definitions provided by the operating system 108to translate potential differences in time zones in accordance with theuser's system settings. These definitions of times in the operatingsystem 108 may also be used to select times in the active document, asits descriptions (e.g., “eastern time” or “EDT”) may match with aspecific time in the selected text.

The selected text is searched for a meeting type or location at step308. This step utilizes a defined set of meeting types provided by thecalendaring and reminder system 114. This defined set of meeting typesmay be expanded by the user by entering a type of meeting into thecalendar entry that is otherwise unknown to the system. A location maybe defined as a conference call number, a physical address, an onlineaddress for a chat room or web-enabled presentation, etc.

All found dates, times, locations (or meeting types) are combined, basedon the text portion in which these are found at step 310. It is likelythat dates, times, and locations that are listed near one another insidea text portion are related. At step 312, the process resumes with themethod described in FIG. 2 at step 208, or alternatively, step 412 ofFIG. 4.

FIG. 4 is a flowchart describing the process of validating and updatinga calendar record via the calendaring and reminder system 110 in anexemplary embodiment. When the current date falls within a predefinedperiod in relation to the date of a calendar entry, the calendaring andreminder system 114 checks the calendar entry for currency and updatesthe entry if necessary as described herein. At step 402 a reminder isassociated with the calendar entry that prescribes when the validationwill be executed. When the reminder is effected, the calendaring andreminder system 114 selects the calendar entry that is due to be updatedat step 404 and the location of the document or data source that wasused to create the calendar entry is opened. The document or data sourcemay include a web site address, a uniform resource locator, a file nameand path in a directory, and an email folder. If successfully opened atstep 406, the contents of the document or data are compared with thecontents that have been stored in the calendar entry and anysimilarities are determined at step 408. If the source content issimilar, no updates are necessary and the process ends at step 420. Ifthe source content is not similar to the contents of the calendar entry,a text analysis is performed for the calendar parameters as described inFIG. 3 at step 410. The information relating to times, dates, andlocations is then used to compare with the calendar parameters stored inthe calendar entry at step 412. The user is prompted to select an optionat step 414. Options provide the user with new dates, time, and/orsubjects. The user may choose to update the calendar with the selecteddata at step 417, create a different calendar entry at step 416, cancelthe calendar entry at step 418, or leave the calendar entry unchanged atstep 419. Regardless of the option selected, the process then ends atstep 420.

Returning now to step 406, if the document or data source cannot beopened at step 406, the calendaring and reminder system 114 may use thestored steps or locations that were saved in another selected calendarsystem as described in step 216 of FIG. 2. If the source is successfullyopened at step 424, the process proceeds to step 412 as described above.Otherwise, a note is attached to the user's calendar entry that thesource of the calendar entry is no longer available at step 426 and theprocess ends at step 420.

The calendaring and reminder system of the present invention may, aspreviously described reside on a stand-alone computer system which mayhave access to the Internet, or may reside on a computer system which ispart of the network through which there is Internet access. With aconnection to a network and/or the Internet, there are several differentways in which the process software used to implement the systems andmethods of the present invention may be integrated with the network, anddeployed using a local network, a remote network, an e-mail system,and/or a virtual private network. The following descriptions review thevarious ways of accomplishing these activities.

Integration of calendaring and reminder system software. To implementthe calendaring and reminder systems and methods of the presentinvention, process software, which is composed of the software asdescribed above and related components including any needed datastructures, is written and then if desired, integrated into a client,server and network environment. This integration is accomplished bytaking those steps needed to enable the process software to coexist withother application, operating system and network operating systemsoftware and then installing the process software on the clients andservers in the environment where the process software will function. Anoverview of this integration activity will now be provided, followed bya more detailed description of the same with reference to the flowchartsof FIGS. 6A and 6B.

The first step in the integration activity is to identify any softwareon the clients and servers where the process software will be deployedthat are required by the process software or that need to work inconjunction with the process software. This includes the networkoperating system, which is the software that enhances a basic operatingsystem by adding networking features.

Next, the software applications and version numbers are identified andcompared to the list of software applications and version numbers thathave been tested to work with the process software. Those softwareapplications that are missing or that do not match the correct versionare upgraded with the correct version numbers. Program instructions thatpass parameters from the process software to the software applicationswill be checked to ensure the parameter lists matches the parameterlists required by the process software. Conversely, parameters passed bythe software applications to the process software will be checked toensure the parameters match the parameters required by the processsoftware. The client and server operating systems including the networkoperating systems are identified and compared to the list of operatingsystems, version numbers and network software that have been tested towork with the process software. Those operating systems, versionnumbers, and network software that do not match the list of testedoperating systems and version numbers are then upgraded on the clientsand servers to the required level.

After ensuring that the software resident on the computer systems wherethe process software is to be deployed is at the correct versionlevel(s), that is, has been tested to work with the process software,the integration is completed. This is done by installing the processsoftware on the clients and servers. Armed with the foregoing overviewof the integration activity, the following detailed description of thesame should be readily understood.

Referring to FIGS. 6A and 6B, step 600 begins the integration of theprocess software for implementing the calendaring and reminder systemsand methods of the present invention. It is determined whether there areany process software programs that will execute on a server or serversat step 602. If this is not the case, then integration proceeds todetermine if the process software will execute on clients at step 614.If this is the case, then the server addresses are identified at step604. The servers are checked to see if they contain software thatincludes the operating system (OS), applications, and network operatingsystems (NOS), together with their version numbers, that have beentested with the process software at step 606. The servers are alsochecked to determine if there is any missing software that is requiredby the process software as part of the activity at step 606. Adetermination is made if the version numbers match the version numbersof OS, applications and NOS that have been tested with the processsoftware at step 608. If all of the versions match and there is nomissing required software the integration continues at step 614. If oneor more of the version numbers do not match, then the unmatched versionsare updated on the server or servers with the correct versions at step610. Additionally, if there is missing required software, it is updatedon the server or servers at step 610. The server integration iscompleted by installing the process software at step 612.

Step 614, which follows either of steps 602, 608 or 612, determines ifthere are any programs of the process software that will execute on theclients. If no process software programs execute on the clients, theintegration proceeds to step 620 and exits. If this not the case, thenthe client addresses are identified at step 616.

At step 618, the clients are checked to see if they contain softwarethat includes the operating system (OS), applications, and networkoperating systems (NOS) software, together with their version numbers,that have been tested with the process software. The clients are alsochecked at step 618 to determine if there is any missing software thatis required by the process software.

At step 622, a determination is made if the version numbers match theversion numbers of OS, applications and NOS that have been tested withthe process software. If all of the versions match and there is nomissing required software, then the integration proceeds to step 620 andexits.

If one or more of the version numbers do not match, then the unmatchedversions are updated on the clients with the correct versions at step624. In addition, if there is any missing required software, it isupdated on the clients as part of step 624. The client integration iscompleted by installing the process software on the clients at step 626.The integration proceeds to step 620 and exits.

Deployment of calendaring and reminder system software. It should bewell understood that the process software for implementing thecalendaring and reminder system of the present invention may be deployedby manually loading the process software directly into the client,server and proxy computers from a suitable storage medium such as a CD,DVD, etc. It is useful to provide an overview of still other ways inwhich the process software may also be automatically orsemi-automatically deployed into one or more computer systems. Theprocess software may be deployed by sending or loading the processsoftware to a central server or a group of central servers. From there,the process software may then be downloaded into the computer clientsthat will execute the process software. Alternatively, the processsoftware may be sent directly to the client system via e-mail. Theprocess software is then either detached to a directory or loaded into adirectory by a button on the e-mail that executes a program thatdetaches the process software attached to the e-mail into a directory.Another alternative is to send the process software directly to adirectory on the hard drive of a computer client. Also, when there areproxy servers, the automatic or self-automatic deployment process willselect the proxy server code, determine on which computers to place theproxy servers' code, transmit the proxy server code, and then installthe proxy server code on the proxy computer. The process software willbe transmitted to the proxy server and then stored on the proxy server.Armed with this overview of the possible deployment processes, thefollowing detailed description of same with reference to FIGS. 7A and7B, where the deployment processes are illustrated, will be more easilyunderstood.

Step 700 begins the deployment of the process software. It is determinedwhether there are any programs that will reside on a server or serverswhen the process software is executed at step 702. If the answer is“yes”, then the servers that will contain the executables areidentified, as indicated in step 736 in FIG. 7B. The process softwarefor the server or servers is transferred directly to the servers'storage via FTP or some other protocol or by copying though the use of ashared file system at step 738. The process software is then installedon the servers as indicated at step 740.

Next, as shown in step 704 in FIG. 7A, a determination is made onwhether the process software is to be deployed by having users accessthe process software on a server or servers. If the users are to accessthe process software on servers, then the server addresses that willstore the process software are identified at step 706.

Next, as shown at step 718, a determination is made if a proxy server isto be built to store the process software. A proxy server is a serverthat sits between a client application, such as a Web browser, and areal server. It intercepts all requests to the real server to see if itcan fulfill the requests itself. If not, it forwards the request to thereal server. The two primary benefits of a proxy server are to improveperformance and to filter requests. If a proxy server is required, it isinstalled as indicated at step 720. Next, the process software forimplementing the present invention is sent to the servers, as indicatedin step 722 either via a protocol such as FTP or it is copied directlyfrom the source files to the server files via file sharing. Another wayof sending the process software to the servers is to send a transactionto the servers that contained the process software and have the serverprocess the transaction. In this manner, the process software may bereceived by and copied into the server's file system. Once the processsoftware is stored at the servers, the users via their computer clients,then access the process software on the servers and copy it into to thefile systems of their computer clients at step 724. Another alternativeis to have the servers automatically copy the process software to eachclient and then run the installation program for the process software ateach computer client. Either way, the user computer executes or causesto be executed the program that installs the process software on thecomputer client at step 742, then the process exits at step 716.

Continuing now at step 708 in FIG. 7A, a determination is made as towhether the process software is to be deployed by sending the processsoftware to users via e-mail. If the answer is yes, then, as indicatedat step 710, the set of users where the process software will bedeployed are identified together with the addresses of the user computerclients. The process software is sent via e-mail in step 726 (shown inFIG. 7B) to each of the users' computer clients. As indicated in step728, the users receive the e-mail, and detach the process software fromthe e-mail to a directory on their computer clients at step 730. Theuser then executes the program that installs the process software on hiscomputer client at step 742 and exits the process at step 716.

Continuing at step 712 (see bottom of FIG. 7A), a determination is madeof whether the process software will be sent directly to userdirectories on their computer clients. If so, the user directories areidentified at step 714. Then, the process software is transferreddirectly to the identified directory on user's computer client, asindicated in step 732. This can be done in several ways such as, but notlimited to, sharing the file system directories and copying from thesender's file system to the recipient user's file system or,alternatively, using a transfer protocol such as File Transfer Protocol(FTP). Next, the users access the directories on their client filesystems, as indicated in step 734, in preparation for installing theprocess software. Finally, the user executes the program that installsthe process software on his computer client at step 742 and then exitsthe process at step 716.

Use of Virtual Private Networks for calendaring and reminder systemsoftware. The process software may be deployed, accessed, and executedthrough the use of a virtual private network (VPN). A VPN is anycombination of technologies that can be used to secure a connectionthrough an otherwise unsecured or untrusted network. VPNs are used toimprove security and can often also reduce operational costs. The VPNmakes use of a public network, usually the Internet, to connect remotesites or users together. Instead of using a dedicated, real-worldconnection such as leased line, the VPN uses “virtual” connectionsrouted through the Internet from the company's private network to theremote site or employee(s). Access to the software via a VPN can beprovided as a service by specifically constructing the VPN for purposesof delivery or execution of the process software (i.e., the softwareresides elsewhere). In such an instance, the lifetime of the VPN isoften limited to a given period of time or to a given number ofdeployments based on an amount paid.

The process software may be deployed, accessed, and executed througheither a remote-access VPN or a site-to-site VPN. When using aremote-access VPN, the process software is typically deployed, accessed,and executed via the secure, encrypted connections between a company'sprivate network and remote users through a third-party service provider.The enterprise service provider (ESP) sets up and/or authorizes accessto a network access server (NAS) and provides the remote users withdesktop client software for their computers. The telecommuters can thendial a phone number (e.g., a toll-free number) or attach directly via acable, DSL, or wireless modem to reach the NAS and use their VPN clientsoftware to access the corporate network and to access, download, andexecute the process software.

When using a site-to-site VPN, the process software is typicallydeployed, accessed and executed through the use of dedicated equipmentand large-scale encryption. These tools are often used to connectmultiple fixed sites of a larger company over a public network such asthe Internet.

The process software is transported over the VPN via a process calledtunneling. Tunneling is process involving the placing of an entirepacket within another packet and sending it over a network. The protocolof the outer packet is understood by the network and by both points,called tunnel interfaces, where the packet enters and exits the network.Tunneling generally encapsulates the private network data and protocolinformation within the public network transmissions so that the privatenetwork protocol information appears to the public network simply asunintelligible data. Armed with the foregoing overview of virtualprivate networks and how they operate and how they may be used totransport the process software, the following more detailed descriptionof same with reference to the flowcharts of FIGS. 8A-8C should be morereadily understood.

Step 800 in FIG. 8A begins the virtual private network (VPN) process. Adetermination is made at step 802 to see if a VPN for remote access isrequired. If it is not required, then flow proceeds to step 804. If itis required, then flow proceeds to step 808 where a determination ismade if as to whether a remote access VPN exists that is available foruse.

If a remote access VPN does exist, then flow proceeds to step 810 inFIG. 8A. Otherwise flow proceeds to step 834 (see top of FIG. 8C), wherea third party provider that will provide the secure, encryptedconnections between the company's private network and the company'sremote users is identified. Next, as indicated in step 836, thecompany's remote users are identified. At step 838, the identified thirdparty provider sets up a network access server (NAS). The NAS allows theremote users to dial a phone number (typically a toll free number) orattach directly via a cable, DSL, wireless, or other modem to access,download, and install the desktop client software for the remote-accessVPN as indicated at step 840.

Returning to step 810 in FIG. 8A, after the remote access VPN has beenbuilt or if it been previously installed, the remote users can thenaccess the process software by dialing into the NAS or attachingdirectly via a cable, DSL, or other modem into the NAS. This step 810allows entry into the corporate network, as indicated at step 812, wherethe process software may be accessed. The process software istransported to the remote user's desktop computer over the network viatunneling. During tunneling (step 814), the process software is dividedinto packets and each packet, including the data and protocol for thatpacket, is placed within another packet. When the process softwarearrives at the remote user's desktop computer, it is removed from thepackets, reconstituted, and then may be executed on the remote usersdesktop, as indicated at step 816.

Returning now to step 804 in FIG. 8A, a determination is made to see ifa VPN for site-to-site access is required. If it is not required, thenflow proceeds to the exit at step 806. If it is required, flow proceedsto step 820 (see top of FIG. 8B) to determine if the site-to-site VPNexists. If it does exist, then flow proceeds to step 826. If it does notexist, then as indicated at step 822, dedicated equipment required toestablish a site-to-site VPN is installed. Then a large-scale encryptionis built into the VPN at step 824.

After the site-to-site VPN has been built, or if it had been previouslyestablished, the users access the process software via the VPN asindicated in step 826. Next, the process software is transported to thesite users over the network via tunneling as indicated in step 828. Aspreviously explained, the process software is divided into packets andeach packet including the data and protocol is placed within anotherpacket, as indicated in step 830. When the process software arrives atthe remote user's desktop, it is removed from the packets,reconstituted, and executed on the site users desktop at step 832. Theprocess proceeds to step 806 and exits.

On Demand Computing for calendaring and reminder system software. Theprocess software for implementing the calendaring and reminder system ofthe present invention may be shared; that is, it may be used tosimultaneously serve multiple customers in a flexible, automatedfashion. Process software is easily standardized, requires littlecustomization, and is scalable, thus providing capacity on demand in apay-as-you-go model known as “on demand” computing. An overview of ondemand computing as applied to the message analysis software will now beprovided, followed by a more detailed description of same made withreference to the flowcharts of FIGS. 9A and 9B.

The process software for implementing the present invention can bestored on a shared file system accessible from one or more servers. Theprocess software may be executed via transactions that contain data andserver processing requests that use measurable CPU units on the accessedserver. CPU units are units of time such as minutes, seconds, and hourson the central processor of the server. Additionally the accessed servermay make requests of other servers that require CPU units. CPU units arean example that represents but one measurement of use. Othermeasurements of use include, but are not limited to, network bandwidth,memory usage, storage usage, packet transfers, complete transactions,etc.

When multiple customers use the same process software application, theirtransactions are differentiated by the parameters included in thetransactions that identify the unique customer and the type of servicefor that customer. All of the CPU units and other measurements of usethat are used for the services for each customer are recorded. When thenumber of transactions to any one server reaches a number that begins toaffect the performance of that server, other servers are accessed toincrease the capacity and to share the workload. Likewise, when othermeasurements of use such as network bandwidth, memory usage, storageusage, etc. approach a capacity so as to affect performance, additionalnetwork bandwidth, memory usage, storage etc. are added as needed toshare the workload.

The measurements of use used for each service and customer are sent to acollecting server that sums the measurements of use for each customerfor each service that was processed anywhere in the network of serversthat provide the shared execution of the process software. The summedmeasurements of use units are periodically multiplied by unit costs andthe resulting total process software application service costs arealternatively sent to the customer and/or indicated on a web siteaccessed by the customer who then remits payment to the serviceprovider.

In another embodiment, the service provider requests payment directlyfrom a customer account at a banking or financial institution. In yetanother embodiment, if the service provider is also a customer of thecustomer that uses the process software application, the payment owed tothe service provider is reconciled to the payment owed by the serviceprovider to minimize the transfer of payments. Armed with the foregoingoverview, the detailed description of the on demand computing withrespect to the process software, the following detailed description ofsame with reference to FIGS. 9A and 9B, where the on demand processesare illustrated, will be more easily understood.

Step 900 begins the On Demand process. A transaction is created thatcontains the unique customer identification, the requested service typeand any service parameters that further specify the type of service asindicated in step 902. The transaction is then sent to the main serveras shown in step 904. In an On Demand environment the main server caninitially be the only server, then as capacity is consumed other serversare added to the On Demand environment.

The server central processing unit (CPU) capacities in the On Demandenvironment are queried at step 906. The CPU requirement of thetransaction is estimated, then the servers available CPU capacity in theOn Demand environment are compared to the transaction CPU requirement tosee if there is sufficient CPU available capacity in any server toprocess the transaction as indicated in step 908. If there is notsufficient server CPU available capacity, then additional server CPUcapacity is allocated to process the transaction as indicated in step916. If there was already sufficient available CPU capacity, thetransaction is sent to a selected server at step 910.

Before executing the transaction, a check is made of the remaining OnDemand environment to determine if the environment has sufficientavailable capacity for processing the transaction as indicated at step912. This environment capacity consists of such things as but notlimited to network bandwidth, processor memory, storage, etc. If thereis not sufficient available capacity, then capacity will be added to theOn Demand environment as indicated in step 914. Next the requiredsoftware to process the transaction is accessed, loaded into memory,then the transaction is executed as indicated in step 918.

The usage measurements are recorded as indicated in step 920. The usagemeasurements consist of the portions of those functions in the On Demandenvironment that are used to process the transaction. The usage of suchfunctions as, but not limited to, network bandwidth, processor memory,storage and CPU cycles are what is recorded. The usage measurements aresummed, multiplied by unit costs, and then recorded as a charge to therequesting customer as indicated in step 922.

If the customer has requested that the On Demand costs be posted to aweb site as indicated in step 924, then they are posted to a web site atstep 926. If the customer has requested that the On Demand costs be sentvia e-mail to a customer address as indicated in step 928, then they aresent to the customer via e-mail as indicated in step 930. If thecustomer has requested that the On Demand costs be paid directly from acustomer account at step 932, then payment is received directly from thecustomer account at step 934. The On Demand process proceeds to step 936and then exits.

As will be appreciated from the above description, the restrictions andlimitations that exist with messaging systems are efficiently overcome.The calendaring and reminder system of the invention enables users ofemail and instant messaging systems to work interoperably, allowing themto switch between messaging systems, in order to improve overallcommunicational efficiency.

As described above, the present invention can be embodied in the form ofcomputer-implemented processes and apparatuses for practicing thoseprocesses. The present invention can also be embodied in the form ofcomputer program code containing instructions embodied in tangiblemedia, such as floppy diskettes, CD-ROMs, hard drives, or any othercomputer-readable storage medium, wherein, when the computer programcode is loaded into and executed by a computer, the computer becomes anapparatus for practicing the invention. The present invention can alsobe embodied in the form of computer program code, for example, whetherstored in a storage medium, loaded into and/or executed by a computer,or transmitted over some transmission medium, such as over electricalwiring or cabling, through fiber optics, or via electromagneticradiation, wherein, when the computer program code is loaded into andexecuted by a computer, the computer becomes an apparatus for practicingthe invention. When implemented on a general-purpose microprocessor, thecomputer program code segments configure the microprocessor to createspecific logic circuits.

While the invention has been described with reference to exemplaryembodiments, it will be understood by those skilled in the art thatvarious changes may be made and equivalents may be substituted forelements thereof without departing from the scope of the invention. Inaddition, many modifications may be made to adapt a particular situationor material to the teachings of the invention without departing from theessential scope thereof. Therefore, it is intended that the inventionnot be limited to the particular embodiments disclosed for carrying outthis invention, but that the invention will include all embodimentsfalling within the scope of the claims.

1. A method for performing calendaring and reminder activities for acomputer user, comprising: analyzing text displayed on a computerscreen; identifying calendar parameters resulting from said analyzing,said calendar parameters comprising at least one of: a date; a time; ameeting type; and a subject; creating a calendar entry record, saidcalendar entry record including a source of said calendar parameters;pasting said calendar parameters into said calendar entry record; andautomatically storing said calendar entry record in a calendarapplication without opening said calendar application.
 2. The method ofclaim 1, further comprising: checking said calendar application forscheduling conflicts by comparing said calendar parameters to datastored in said calendar application; alerting said computer user when ascheduling conflict exists; and in response to a request by saidcomputer user, performing at least one of: bypassing said schedulingconflict and retaining conflicting scheduling data; and discardingselected calendar parameters to avoid said scheduling conflict.
 3. Themethod of claim 1, wherein said automatically storing said calendarentry record in a calendar application includes prompting said computeruser to select a calendar application for storing said calendar entryrecord when more than one calendar application exists on said computeruser's computer system.
 4. The method of claim 1, wherein said text isselected for analysis by said computer user.
 5. The method of claim 1,wherein said text is: entered by said computer user using a softwareapplication; displayed on said computer screen in response to accessinga web site; displayed on said computer screen in response to accessing aweb page; displayed on said computer screen in response to opening anemail message; displayed on said computer screen in response to openinga document.
 6. The method of claim 1, wherein said source includes atleast one of: a web site address; a uniform resource locator; a filename and path in a directory; and an email folder.
 7. The method ofclaim 1, further comprising analyzing said calendar entry records forvalidating currency of calendar data and updating said data ifapplicable, said analyzing said calendar entry records and updating saiddata comprises: opening a source associated with a calendar entry recordto be analyzed; comparing content displayed upon said opening a sourcewith content in said calendar entry record; if content displayed uponsaid opening a source is not similar to content in said calendar entryrecord: presenting both sets of data to said computer user; andprompting said computer user to select from options including at leastone of: updating said calendar entry record with new data found as aresult of said opening a source associated with a calendar entry record;creating a new calendar entry record; and canceling said calendar entryrecord; and if content displayed upon said opening a source is similarto content in said calendar entry record, retaining said calendar entryrecord.
 8. The method of claim 7, further comprising: including a noticein a calendar entry record when a source associated with said calendarentry record to be analyzed cannot be opened.
 9. The method of claim 1,wherein said meeting type comprises a location, said location includingat least one of: a conference call number; a physical address; an onlineaddress for a chat room or web-enabled presentation.
 10. The method ofclaim 1, further comprising deploying process software for performingsaid calendaring and reminder activities, said deploying comprising:installing said process software on at least one server; identifyingserver addresses for users accessing said process software on said atleast one server; installing a proxy server if needed; sending saidprocess software to said at least one server and copying said processsoftware to a file system of said at least one server; sending theprocess software to at least a first computer client; and executing saidprocess software on said first computer client.
 11. The method of claim10, wherein said installing said process software further comprises:determining if programs will reside on said at least one server whensaid process software is executed; identifying said at least one serverthat will execute said process software; and transferring said processsoftware to storage for said at least one server.
 12. The method ofclaim 10, wherein said sending said process software to said firstcomputer client further includes having said at least one serverautomatically copy said process software to said first computer client,and running an installation program at said first computer client toinstall said process software on said first computer client.
 13. Themethod of claim 10, wherein said sending said process software to saidfirst computer client further comprises identifying a user and anaddress of said first computer client.
 14. The method of claim 10,wherein said sending said process software to said first computer clientincludes sending said process software to at least one directory on saidfirst computer client.
 15. The method of claim 10, wherein said sendingsaid process software to said first computer client includes sendingsaid process software to said first computer client via e-mail.
 16. Themethod of claim 1, further comprising integrating process software forperforming said calendaring and reminder activities, said integratingcomprising: determining if said process software will execute on atleast one server; identifying an address of said at least one server;checking said at least one server for operating systems, applications,and version numbers for validation with said process software, andidentifying any missing software applications for said at least oneserver that are required for integration; updating said at least oneserver with respect to any operating system and application that is notvalidated for said process software, and providing any of said missingsoftware applications for said at least one server required for saidintegration; identifying client addresses and checking computer clientsfor operating systems, applications, and version numbers for validationwith said process software, and identifying any software applicationsmissing from said computer clients that are required for integration;updating said computer clients with respect to any operating system andapplication that is not validated for said process software, andproviding any missing software application for said computer clientsrequired for said integration; and installing said process software onsaid computer clients and said at least one server.
 17. The method ofclaim 1, further comprising on demand sharing of process software forperforming said calendaring and reminder activities, said on demandsharing comprising: creating a transaction containing unique customeridentification, requested service type, and service parameters; sendingsaid transaction to at least one main server; querying said at least onemain server about processing capacity associated with said at least onemain server to help ensure availability of adequate resources forprocessing of said transaction; and allocating additional processingcapacity when additional capacity appears needed to process saidtransaction, said additional processing capacity being selected from thegroup of additional capacities consisting of central processing unitcapacity, processor memory capacity, network bandwidth capacity, andstorage capacity.
 18. The method of claim 17, further comprisingrecording a plurality of usage measurements selected from the group ofusage measurements consisting of network bandwidth, processor memory,storage, and central processing unit cycles.
 19. The method of claim 18,further comprising: summing said usage measurements; acquiring at leastone multiplicative value associated with said usage measurements andwith unit costs; and recording any such acquired multiplicative value asan on demand charge to a requesting customer.
 20. The method of claim19, further comprising at least one of: posting said on demand charge ona web site if requested by said requesting customer; and sending said ondemand charge via e-mail to said requesting customer's e-mail address.21. The method of claim 19, further comprising charging said on demandcharge to said requesting customer's account if an account exists and ifsaid requesting customer has selected a charge account payment method.22. The method of claim 1, further comprising deploying, accessing, andexecuting process software for performing said calendaring and reminderactivities, said deploying, accessing, and executing process softwareimplemented through a virtual private network, the method furthercomprising: determining if a virtual private network is required;checking for remote access to said virtual private network when it isrequired; if said remote access does not exist, identifying a thirdparty provider to provide secure, encrypted connections between aprivate network and remote users; identifying said remote users; andsetting up a network access server operable for downloading andinstalling client software on desktop computers for remote access ofsaid virtual private network; accessing said process software;transporting said process software to at least one remote user's desktopcomputer; and executing said process software on said at least oneremote user's desktop computer.
 23. The method of claim 22, furthercomprising: determining if said virtual private network has asite-to-site configuration for providing site-to-site access, and ifsaid virtual private network is not so available, installing equipmentrequired to establish a site-to-site configuration for said virtualprivate network; installing large scale encryption into saidsite-to-site virtual private network; and accessing said processsoftware through said site-to-site configuration with large scaleencryption.
 24. The method of claim 23, wherein said accessing saidprocess software further comprises at least one of: dialing into saidnetwork access server, and attaching directly via a modem into saidnetwork access server, said modem being selected from the group ofmodems consisting of telephone dial-up modems, cable modems, DSL modems,and wireless modems.
 25. A storage medium encoded with machine-readablecomputer program code for performing calendaring and reminder activitiesfor a computer user, said storage medium including instructions forcausing a computer to implement a method, comprising: analyzing textdisplayed on a computer screen; identifying calendar parametersresulting from said analyzing, said calendar parameters comprising atleast one of: a date; a time; a meeting type; and a subject; creating acalendar entry record, said calendar entry record including a source ofsaid calendar parameters; pasting said calendar parameters into saidcalendar entry record; and automatically storing said calendar entryrecord in a calendar application without opening said calendarapplication.
 26. The storage medium of claim 25, further comprisinginstructions for causing said computer to implement: checking saidcalendar application for scheduling conflicts by comparing said calendarparameters to data stored in said calendar application; alerting saidcomputer user when a scheduling conflict exists; and in response to arequest by said computer user, performing at least one of: bypassingsaid scheduling conflict and retaining conflicting scheduling data; anddiscarding selected calendar parameters to avoid said schedulingconflict.
 27. The storage medium of claim 25, wherein said automaticallystoring said calendar entry record in a calendar application includesprompting said computer user to select a calendar application forstoring said calendar entry record when more than one calendarapplication exists on said computer user's computer system.
 28. Thestorage medium of claim 25, wherein said text is selected for analysisby said computer user.
 29. The storage medium of claim 25, wherein saidtext is: entered by said computer user using a software application;displayed on said computer screen in response to accessing a web site;displayed on said computer screen in response to accessing a web page;displayed on said computer screen in response to opening an emailmessage; displayed on said computer screen in response to opening adocument.
 30. The storage medium of claim 25, wherein said sourceincludes at least one of: a web site address; a uniform resourcelocator; a file name and path in a directory; and an email folder. 31.The storage medium of claim 25, further comprising instructions forcausing said computer to perform: analyzing said calendar entry recordsfor validating currency of calendar data and updating said data ifapplicable, said analyzing said calendar entry records and updating saiddata comprises: opening a source associated with a calendar entry recordto be analyzed; comparing content displayed upon said opening a sourcewith content in said calendar entry record; if content displayed uponsaid opening a source is not similar to content in said calendar entryrecord: presenting both sets of data to said computer user; andprompting said computer user to select from options including at leastone of: updating said calendar entry record with new data found as aresult of said opening a source associated with a calendar entry record;creating a new calendar entry record; and canceling said calendar entryrecord; and if content displayed upon said opening a source is similarto content in said calendar entry record, retaining said calendar entryrecord.
 32. The storage medium of claim 31, further comprisinginstructions for causing said computer to implement: including a noticein a calendar entry record when a source associated with said calendarentry record to be analyzed cannot be opened.
 33. The storage medium ofclaim 25, wherein said meeting type comprises a location, said locationincluding at least one of: a conference call number; a physical address;an online address for a chat room or web-enabled presentation.
 34. Thestorage medium of claim 25, further comprising instructions for causingsaid computer to deploy process software for performing said calendaringand reminder activities, wherein deployment of process softwarecomprises: installing said process software on at least one server;identifying server addresses for users accessing said process softwareon said at least one server; installing a proxy server if needed;sending said process software to said at least one server and copyingsaid process software to a file system associated with said at least oneserver; sending said process software to at least a first client system;executing said process software on said first client system; determiningif programs will reside on said at least one server when said processsoftware is executed; identifying said at least one server that willexecute said process software; and transferring said process software tostorage for said at least one server.
 35. The storage medium of claim34, wherein said installing said process software further comprises:determining if programs will reside on said at least one server whensaid process software is executed; identifying said at least one serverthat will execute said process software; and transferring said processsoftware to storage for said at least one server.
 36. The storage mediumof claim 34, wherein said sending said process software to said firstclient system includes having said at least one server automaticallycopy said process software to said first client system, and running aninstallation program at said first client system to install said processsoftware on said first client system.
 37. The storage medium of claim34, wherein said sending said process software to said first computerclient further comprises identifying a user and an address of said firstcomputer client.
 38. The storage medium of claim 34, wherein saidsending said process software to said first computer client includessending said process software to at least one directory on said firstcomputer client.
 39. The storage medium of claim 34, wherein saidsending said process software to said first computer client includessending said process software to said first computer client via e-mail.40. The storage medium of claim 25, further comprising instructions forcausing said computer to integrate process software for performing saidcalendaring and reminder activities, wherein integration comprises:determining if said process software will execute on at least oneserver; identifying an address of said at least one server; checkingsaid at least one server for operating systems, applications, andversion numbers for validation with said process software, andidentifying any missing software applications for said at least oneserver that are required for integration; updating said at least oneserver with respect to any operating system and application that is notvalidated for said process software and providing any of said missingsoftware application for said at least one server required for saidintegration; identifying client addresses and checking client systemsfor operating systems, applications, and version numbers for validationwith said process software, and identifying any software applicationsmissing from said client systems that are required for integration;updating said client systems with respect to any operating system andapplication that is not validated for said process software, andproviding any missing software application for said client systemsrequired for said integration; and installing said process software onsaid client systems and said at least one server.
 41. The storage mediumof claim 25, further comprising instructions for causing said computerto implement on demand sharing of process software operable forperforming said calendaring and reminder activities, said on demandsharing of process software including: creating a transaction containinga unique customer identification, requested service type, and serviceparameters; sending said transaction to said at least one server;querying said at least one server about processing capacity associatedwith said at least one server to help ensure availability of adequateresources for processing of said transaction; and allocating additionalprocessing capacity when additional capacity is needed to process saidtransaction, said additional processing capacity being selected from thegroup of additional capacities consisting of central processing unitcapacity, processor memory capacity, network bandwidth capacity, andstorage capacity.
 42. The storage medium of claim 41, further comprisinginstructions for causing said computer to implement: recording aplurality of usage measurements selected from the group of usagemeasurements consisting of network bandwidth, processor memory, storage,and central processing unit cycles.
 43. The storage medium of claim 42,further comprising instructions for causing said computer to implement:summing said usage measurements; acquiring at least one multiplicativevalue associated with said usage measurements and with unit costs; andrecording any such acquired multiplicative value as an on demand chargeto a requesting customer.
 44. The storage medium of claim 43, furthercomprising instructions for causing said computer to implement at leastone of: posting said on demand charge on a web site if requested by saidrequesting customer; and sending said on demand charge via e-mail tosaid requesting customer's e-mail address.
 45. The storage medium ofclaim 43, further comprising instructions for causing said computer toimplement: charging said on demand charge to said requesting customer'saccount if an account exists and if said requesting customer hasselected a charge account payment method.
 46. The storage medium ofclaim 25, further comprising instructions for causing said computer toimplement deploying, accessing, and executing process software forperforming said calendaring and reminder activities through a virtualprivate network, said deploying, accessing, and executing processsoftware including: determining if a virtual private network isrequired; checking for remote access to said virtual private networkwhen it is required; if said remote access does not exist, identifying athird party provider to provide secure, encrypted connections between aprivate network and remote users; identifying said remote users; settingup a network access server for downloading and installing clientsoftware on desktop computers for remotely accessing said virtualprivate network; accessing said process software; transporting saidprocess software to at least one remote user's desktop computer; andexecuting said process software on said at least one remote user'sdesktop computer.
 47. The storage medium of claim 46, further comprisinginstructions for causing said computer to implement: determining if saidvirtual private network has a site-to-site configuration for providingsite-to-site access, and if said virtual private network is not soavailable, installing equipment required to establish a site-to-siteconfiguration for said virtual private network; installing large scaleencryption into said site-to-site virtual private network; and accessingsaid process software through said site-to-site configuration withlarge-scale encryption; wherein said accessing said process softwareincludes at least one of: dialing into said network access server; andattaching directly via a modem into said network access server, saidmodem being selected from the group of modems consisting of telephonedial-up modems, cable modems, DSL modems and wireless modems.
 48. Asystem for performing calendaring and reminder activities for a computeruser, comprising: a computer client system executing at least onecalendar application and at least one of: a web browser program; anemail program; a word processing program; a link to a server, whereinsaid computer client system accesses data from said server via acommunications network; a calendaring and reminder system accessible tosaid computer client system; and a calendar entry record stored on saidcomputer client system; wherein said calendaring and reminder systemperforms: analyzing text displayed on a computer screen of said computerclient system; identifying calendar parameters resulting from saidanalyzing, said calendar parameters comprising at least one of: a date;a time; a location; a meeting type; and a subject; creating a calendarentry record, said calendar entry record including a source of saidcalendar parameters; pasting said calendar parameters into said calendarentry record; and automatically storing said calendar entry record insaid calendar application without opening said calendar application.